import java.awt.event.FocusEvent;

import javax.swing.plaf.synth.SynthSpinnerUI;

public class Inc { 
		/*
		 * 算法
		 * 1）插入排序（直接插入排序、希尔排序） 

			2）交换排序（冒泡排序、快速排序） 
			
			3）选择排序（直接选择排序、堆排序） 
			
			4）归并排序 
			
			5）分配排序（基数排序）
		 */
		/*
		 * 设计模式
		 * 
		 */
		/*
		 * ioc,aop原理
		 */
		/*
		 * 集合框架，数据结构，原理。
		 */
		/*
		 * 多线程
		 * 并发包
		 * 线程池
		 */
		/*
		 * ssm
		 * spring，spring mvc ，mybatis
		 * MVC
		 * c控制层，原理是sevlet,servlet的生命周期。
		 * 		事务		
		 * M模型，javabean
		 * v视图层，模板技术，就是JSP，Jsp原理
		 * 
		 * my
		 * 
		 * Controller(servlet)-Service
		 * 
		 */
		
		 
	    public static void main(String[] args) { 
	    	int a[]={100,500,444,38,28,75,50,65,6,88,99,56};
	    	Inc.sds(a);
	    	Inc.AdjustArray(a,0,a.length-1);
	    	
	    } 
	    /*
	     * 冒泡排序
	     * 
	     */
	    public static void find(int[] a){
	    	int temp;
	    	for (int i = 0; i < a.length-1; i++) {
	    		for (int j = 0; j < a.length-i-1; j++) {
	    			if(a[j]>a[j+1]){
	    				temp=a[j];
	    				a[j]=a[j+1];
	    				a[j+1]=temp;
	    			}     			
				}	    		
			}	
	    	Inc.sds(a);
	    }
	    /*
	     * 选择排序
	     * 
	     */
	    public static void selectSort(int[] a){
	    	int temp;
	    	for (int i = 0; i < a.length; i++) {		
	    		int k=i;
				for (int j = i; j < a.length; j++) {			    		
					if(a[j]<a[k]){
						k=j;
					}
					temp=a[i];
					a[i]=a[k];
					a[k]=temp;
				}
			}	 
	    	Inc.sds(a);
	    	
	    }
	    /*
	     * 选择排序的改进二元选择排序
	     */
	    public static void SelectSort2(int[] a){
	    	
	    }
	    /*
	     * 插入排序
	     */
	    public static void InsertSort(int[] a){
	    	int len=a.length;
	    	for (int i = 0; i < len; i++) {
				for (int j = i; j <i+1; j++) {			    				    								
					if(j>=1&&a[j]<a[j-1]){
						int x=j-1;
						int temp=a[j];
						a[j]=a[j-1];						
						while(x>=0&&temp<a[x]){
							a[x+1]=a[x];							
							x--;
						}
					   	a[x+1]=temp;
					}
			      }
				}
	    		Inc.sds(a);	    	
			 }
	    /*
	     * 快速排序
	     */
	    public static void AdjustArray(int[] a,int l,int r){
	    	int x=a[l];
	    	int y=l;
	    	int z=r;	 
	    	if(l<r){	    	    
	    	while(y<z){
	    		while(y<z&&a[z]>=x){
	    			z--;
	    		}	
	    		if(y<z){
	    			a[y]=a[z];
	    			y++;
	    		}
	    		while(y<z&&a[y]<x){
	    			y++;
	    		}
	    		if(y<z){
	    			a[z]=a[y];
	    			z--;
	    		} 		
	    	}
	    	a[y]=x;
	    	AdjustArray(a,l,y-1);
	    	AdjustArray(a,y+1,r);	    		    	
    		Inc.sds(a);	    	
	    	}		
	    }
		  
	    public static void sds(int[] a){
	    	for (int i = 0; i < a.length; i++) {
	    		if(i<a.length-1){
	    			System.out.print(a[i]+",");
	    		}else{
	    			System.out.println(a[i]);
	    		}
	    					
			}
	    }
	}

